Вход

Просмотр полной версии : проверка формы на изменение полей, кроме одного!


cmygeHm
30.12.2010, 12:12
Привет всем!
Есть такой код:


var form = new Ext.FormPanel({
id: 'form_id',
url: 'curl',
frame: true,
monitorValid: true,
trackResetOnLoad: true,
items: [

],
listeners: {
clientvalidation: function(form, valid){
if (form.getForm().isDirty())
console.log('DIRTY!!!');
}

}

});

проверяющий не изменялись ли какие поля формы. А есть поле формы(комбобокс), которое не должно учитываться при проверке формы. Как сделать это? Выставлять для формы form.dirty=false не получается.

Спасибо за Ваше драгоценное время.

Ex_Soft
04.01.2011, 12:40
А есть поле формы(комбобокс), которое не должно учитываться при проверке формы. Как сделать это?
allowBlank/preventMark/validator (http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.ComboBox)?

cmygeHm
10.01.2011, 09:33
нет, совсем не то...

cmygeHm
14.01.2011, 10:21
Есть еще идеи???

Ex_Soft
14.01.2011, 10:35
нет, совсем не то...
А чем Вас предложенные варианты не устроили? Тот же validator (http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.ComboBox&member=validator)? Повесьте на него функцию возвращающую true...

cmygeHm
14.01.2011, 10:49
я повесил, не срабатывает:

validator: function(){
return true;
},
Я нашел, что если после изменения значения в combo выполнить
Ext.form.TextField.superclass.reset.call(Ext.getCm p('combo_id'));
то он становится валидным. Думаю привяжу его к событию onselect. ??? Как Вы на это смотрите?

Ex_Soft
14.01.2011, 11:33
я повесил, не срабатывает
Но функция, как таковая, хоть дергается? Поставьте брякпоинт на
validator: function(){
==> return true;
},
Попадаем?

Я нашел, что если после изменения значения в combo выполнить
Ext.form.TextField.superclass.reset.call(Ext.getCm p('combo_id'));
то он становится валидным. Думаю привяжу его к событию onselect. ??? Как Вы на это смотрите?
Да ректально как-то это, IMHO... Должно быть все просто как арбуз: операция довольно-таки довольно тривиальная (исключить контрол из валидирования)... Такие извраты...

cmygeHm
14.01.2011, 11:47
заходит в тело функции. все ок.

cmygeHm
14.01.2011, 11:52
xtype: 'container',
layout: 'column',
items: [
{
xtype: 'combo',
valueField: 'id',
id: 'combo_id',
width: 140,
displayField: 'action_name',
triggerAction: 'all',
selectOnFocus:true,
hiddenName: 'actions',
validator: function(){
return true;
},
store: new Ext.data.JsonStore({
autoLoad: true,
url: 'url',
fields: ['id','action_name'],
root: 'rows',
listeners: {
load: function(){
Ext.getCmp('combo_id').setValue(1);
}
}
})

}

Ex_Soft
14.01.2011, 12:06
Дык, получается, помог validator (http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.ComboBox&member=validator)?

cmygeHm
14.01.2011, 12:12
нет. clientvalidation показывает, что isDirty!

cmygeHm
14.01.2011, 12:53
Сделал так:
xtype: 'container',
layout: 'column',
items: [
{
xtype: 'combo',
valueField: 'id',
id: 'combo_id',
width: 140,
displayField: 'action_name',
triggerAction: 'all',
selectOnFocus:true,
hiddenName: 'actions',
store: new Ext.data.JsonStore({
autoLoad: true,
url: 'url',
fields: ['id','action_name'],
root: 'rows',
listeners: {
load: function(){
Ext.getCmp('combo_id').setValue(1);
Ext.getCmp('combo_id').originalValue = 1;
}

}
}),
listeners:{
select: function(){
Ext.getCmp('combo_id').originalValue = Ext.getCmp('combo_id').getValue();
}
}
основываясь на вот этом http://www.delphifaq.com/faq/javascript/extjs/f3463.shtml

cmygeHm
14.01.2011, 12:54
Ex_Soft Спасибо тебе! :)

dp_maximk
11.04.2011, 13:24
Нашел более красивый способ :)

items: [
{
xtype: 'combo',
valueField: 'id',
.....
isDirty: function() { return false }
}

cmygeHm
13.04.2011, 18:27
Нашел более красивый способ :)

items: [
{
xtype: 'combo',
valueField: 'id',
.....
isDirty: function() { return false }
}


Круто :) Спасибо :)